/*
 * Node.java: classe que representa um nó da estrutura K-d tree
 */

public class Node {
   private int valor;
   private int numeroUnidades;
   private int cmp;
   private Node filhoEsq, filhoDir;
   private String pageLeft, pageRight;

   public Node(int valor, int numeroUnidades, int cmp, String pageLeft, String pageRight) {
      this.valor = valor;
      this.numeroUnidades = numeroUnidades;
      this.cmp = cmp;
      this.pageLeft = pageLeft;
      this.pageRight = pageRight;
      this.filhoEsq = null;
      this.filhoDir = null;
   }

   public String getPage(int valor, int numeroUnidades) {
      if (this.cmp == 0) {
         if (valor <= this.valor) return this.pageLeft;
         else return this.pageRight;
      }
      else {
         if (numeroUnidades <= this.numeroUnidades) return this.pageLeft;
         else return this.pageRight;
      }
   }

   public int getCmp() {
      return this.cmp;
   }

   public int getValor() {
      return this.valor;
   }

   public int getNumeroUnidades() {
      return this.numeroUnidades;
   }

   public Node getNodeLeft() {
      return this.filhoEsq;
   }

   public Node getNodeRight() {
      return this.filhoDir;
   }

   public String getPageLeft() {
      return this.pageLeft;
   }

   public String getPageRight() {
      return this.pageRight;
   }

   public void setChildren(String page, Node filho) {
      if ((this.pageLeft != null)&&(this.pageLeft.equals(page))) {
         this.pageLeft = null;
         this.filhoEsq = filho;
      }
      else {
         this.pageRight = null;
         this.filhoDir = filho;
      }
   }
}
